package com.fh.UDP;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;

/**
 * @author 方小勤
 * @version 1.0~
 */
public class UDPRecevierA {
    public static void main(String[] args) throws IOException {
        //1. 创建一个 DategramSocket 对象，准备在 9999 接受数据
        DatagramSocket socket = new DatagramSocket(9999);
        //2. 构建一个 DatagramPacket 对象,准备接收数据
        byte[] buf  = new byte[1024];
        DatagramPacket packet = new DatagramPacket(buf, buf.length);
        //3. 调用 接受方法， 将通过网络传输的 DatagramPacket 对象
        //当有数据包发送到 本机的 9999 端口时，就会接收到数据,如果没有数据包发送到 本机的 9999 端口, 就会阻塞等待
        System.out.println("接收端 A 等待接收数据...");
        socket.receive(packet);
        //4. 可以把 packet 进行拆包，取出数据，并显示
        int len = packet.getLength();//实际接收到的数据字节长度
        byte[] data = packet.getData();//接收到的数据
        String s = new String(data, 0, len);
        System.out.println(s);
        //=========回复信息给B端=========
        data = "好的，明天见".getBytes();
        new DatagramPacket(data,data.length, InetAddress.getByName("192.168.110.10"),8888);
        socket.send(packet);
        // 关闭资源
        socket.close();
        System.out.println("A 端退出");
    }
}
